]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
sessionMode: Add allowSettings property
authorFlorian Müllner <fmuellner@gnome.org>
Wed, 16 May 2012 23:43:59 +0000 (01:43 +0200)
committerFlorian Müllner <fmuellner@gnome.org>
Tue, 22 May 2012 17:42:28 +0000 (19:42 +0200)
Add a sessionMode.allowSettings property, which determines whether
menus in the top bar should allow access to System Settings or not.

https://bugzilla.gnome.org/show_bug.cgi?id=676156

js/ui/popupMenu.js
js/ui/sessionMode.js
js/ui/status/keyboard.js
js/ui/userMenu.js

index 1ec5e55eff6a4721cbe6daee4b756cefd42d8706..35843d9013ef3a319274174eaf46109e0e47d964 100644 (file)
@@ -888,8 +888,7 @@ const PopupMenuBase = new Lang.Class({
     },
 
     addSettingsAction: function(title, desktopFile) {
-        // Don't allow user settings to get edited unless we're in a user session
-        if (Main.sessionMode.sessionType != Shell.SessionType.USER)
+        if (!Main.sessionMode.allowSettings)
             return null;
 
         let menuItem = this.addAction(title, function() {
index df25923135bac86da0dd3261c48cb550350cfefd..257214934d5e56961c198fd37c1fc39f124f64ba 100644 (file)
@@ -11,11 +11,13 @@ const _modes = {
     'gdm': { hasOverview: false,
              hasAppMenu: false,
              showCalendarEvents: false,
+             allowSettings: false,
              sessionType: Shell.SessionType.GDM },
 
     'user': { hasOverview: true,
               hasAppMenu: true,
               showCalendarEvents: true,
+              allowSettings: true,
               sessionType: Shell.SessionType.USER }
 };
 
index c5400bc6b78983d098bed0b1444481dec3cf15b0..90dd8f6e605ec19007cea80c9fa21eb71f184936 100644 (file)
@@ -63,7 +63,11 @@ const XKBIndicator = new Lang.Class({
 
         this._syncConfig();
 
-        if (Main.sessionMode.sessionType == Shell.SessionType.USER) {
+        // re-using "allowSettings" for the keyboard layout is a bit shady,
+        // but at least for now it is used as "allow popping up windows
+        // from shell menus"; we can always add a separate sessionMode
+        // option if need arises.
+        if (Main.sessionMode.allowSettings) {
             this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
             this.menu.addAction(_("Show Keyboard Layout"), Lang.bind(this, function() {
                 Main.overview.hide();
index 07c0a1960d58bff7f208b67759b9b49eaa1db47b..bc21fdf22eb4e8dd9c6455a48ca4e17e1ab77321 100644 (file)
@@ -624,7 +624,8 @@ const UserMenuButton = new Lang.Class({
         let item;
 
         item = new IMStatusChooserItem();
-        item.connect('activate', Lang.bind(this, this._onMyAccountActivate));
+        if (Main.sessionMode.allowSettings)
+            item.connect('activate', Lang.bind(this, this._onMyAccountActivate));
         this.menu.addMenuItem(item);
         this._statusChooser = item;
 
@@ -636,9 +637,11 @@ const UserMenuButton = new Lang.Class({
         item = new PopupMenu.PopupSeparatorMenuItem();
         this.menu.addMenuItem(item);
 
-        item = new PopupMenu.PopupMenuItem(_("System Settings"));
-        item.connect('activate', Lang.bind(this, this._onPreferencesActivate));
-        this.menu.addMenuItem(item);
+        if (Main.sessionMode.allowSettings) {
+            item = new PopupMenu.PopupMenuItem(_("System Settings"));
+            item.connect('activate', Lang.bind(this, this._onPreferencesActivate));
+            this.menu.addMenuItem(item);
+        }
 
         item = new PopupMenu.PopupAlternatingMenuItem(_("Power Off"),
                                                       _("Suspend"));